/*
 * This file is curently planned for removal, as the blocks system is being replaced with RFID tags
 */

#ifndef _BLOCK_H_
#define _BLOCK_H_

#include <string>
#include <vector>

#include "rfid_tag.hpp"
class RFID_tag;

#define BLOCK_FREE 1
#define BLOCK_USED 2
#define BLOCK_RES 3

using namespace std;

class Block
{
public:
	//CONSTRUCTOR FUNCTIONS
	Block();

	Block(const Block& a);
	
	//ACCESS FUNCTIONS
	int getID();
	
	string getName();
	
	Block* getLink(unsigned int index);
	
	int getLinkDist(unsigned int index);

	void printBlockInfo(vector<Block*> BlockMap);
	//MODIFIER FUNCTIONS


	// Elements
	//! Unique ID to distinguish from other similar IDs. 
	int ID;
	
	//! Human readable name of the Block.
	string name;
	
	//! Status of the Block
	char status;

	//! Vector of Block pointers to connected locations on the map.
	vector<Block*> links;

	//! Vector pointing to all the RFID tags that link this node to the other Blocks.
	vector<RFID_tag*> tags;
};

#endif
